1

前段时间在网上跟一个大厂据说很NB的同行大佬聊天,然后大佬问了我一个问题,“在实际生产中前端怎么解决跨域问题” 我当时就回答说我们目前的状况是需要服务端做一些配合解决的,然后大佬很不满意的暗示了我一下JSONP用过吗?我当时就觉得很不可思议,实际生产中就只有get请求吗?而且这玩意儿在实际生产中都基本不用的,我开始有点怀疑我是不是掉队了,所以今天大概梳理下这块的知识点。


浏览器在请求不同域的资源时,会因为同源策略的影响请求不成功,这就是通常被提到的“跨域问题”。作为前端开发,跨域经常遇到,我们通常所说的JS跨域,指的是在处理跨域请求的过程中,技术面会偏浏览器端较多一些,那什么是跨域呢?
JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象,当协议、子域名、主域名、端口号,其中的任意一个不同的时候都是不同的域,那也就是算做跨域。
请求跨域的时候并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了,正是因为同源策略的限制,同源策略的要求是协议、域名、和端口号都完全一致才可以进行正常的通信。

需要说明的几个点:
1.如果是协议和端口造成的跨域问题,前端是无能为力的。
2.在跨域问题上,域只是通过访问URL的头部(.com或者.cn以及之前部分)来识别的,而不是根据域名对应的IP地址是否相同去判断的。
3.在实际生产中JSONP的局限性很大,基本上不会去考虑,使用几率很小。


目前我们的状况是在服务器端头部增加配置:

header( "Access-Control-Allow-Origin:*" );
header( "Access-Control-Allow-Methods:POST,GET" );





各位路过的大佬有什么优秀的方案吗?请不吝赐教


白胡子小道
6 声望2 粉丝